Skip to content

fix(config): default TypeORM synchronize to false across all environments - #1369

Merged
RUKAYAT-CODER merged 1 commit into
rinafcode:mainfrom
xeexco:fix/disable-synchronize-by-default-issue-1210
Aug 29, 2026
Merged

fix(config): default TypeORM synchronize to false across all environments#1369
RUKAYAT-CODER merged 1 commit into
rinafcode:mainfrom
xeexco:fix/disable-synchronize-by-default-issue-1210

Conversation

@xeexco

@xeexco xeexco commented Aug 29, 2026

Copy link
Copy Markdown
Contributor

Overview

Defaults TypeORM synchronize to false across all environments to prevent schema synchronization from fighting migration-managed schemas and dropping columns, while allowing an explicit dev-only opt-in via DATABASE_SYNCHRONIZE or TYPEORM_SYNCHRONIZE.

Related Issue

Closes #1210

Changes

Database Configuration & Validation

  • [MODIFY] src/config/database.config.ts
    • Defaults synchronize to false across all environments (production, development, test, ci, or unset).
    • Adds resolveSynchronize() helper allowing explicit opt-in via DATABASE_SYNCHRONIZE=true|1 or TYPEORM_SYNCHRONIZE=true|1.
  • [MODIFY] src/config/env.validation.ts
    • Adds DATABASE_SYNCHRONIZE and TYPEORM_SYNCHRONIZE optional boolean properties to envValidationSchema.
  • [MODIFY] src/config/database.config.spec.ts
    • Adds unit test coverage for default synchronize: false across all NODE_ENV values and explicit opt-in via env flags.
  • [MODIFY] src/config/env.validation.spec.ts
    • Adds tests for DATABASE_SYNCHRONIZE validation and updates valid test environment fixture.
  • [MODIFY] .env.example
    • Documents DATABASE_SYNCHRONIZE=false under database configuration.

Documentation

  • [MODIFY] docs/migrations.md
    • Updates guide to reflect migration-driven schema management and synchronize: false default across environments.
  • [MODIFY] docs/setup.md, docs/troubleshooting.md, docs/runbook.md
    • Updates database startup, troubleshooting, and maintenance workflows to use pnpm migrate:run instead of auto-synchronize.

Verification Results

$ pnpm test src/config/database.config.spec.ts src/config/env.validation.spec.ts
PASS src/config/env.validation.spec.ts
PASS src/config/database.config.spec.ts
Test Suites: 2 passed, 2 total
Tests:       29 passed, 29 total

$ pnpm run lint:ci && pnpm run typecheck && pnpm run build && pnpm run format:check && pnpm run migrations:check
✓ Lint passed (0 errors)
✓ Typecheck passed
✓ Build successful
✓ Prettier formatting verified
✓ All 34 migration files verified
Acceptance Criteria Status
Default synchronize to false in non-production environments ✅ Verified in database.config.ts & unit tests
Support explicit dev opt-in via env flag (DATABASE_SYNCHRONIZE) ✅ Implemented and tested
Add DATABASE_SYNCHRONIZE to env validation schema ✅ Implemented in env.validation.ts & spec
Update documentation and configuration templates ✅ Updated docs/migrations.md, setup.md, troubleshooting.md, runbook.md, .env.example

…ents

- Default TypeORM synchronize to false in database.config.ts for all environments
- Support explicit opt-in via DATABASE_SYNCHRONIZE / TYPEORM_SYNCHRONIZE env flags
- Add DATABASE_SYNCHRONIZE and TYPEORM_SYNCHRONIZE to Joi envValidationSchema
- Add comprehensive unit tests in database.config.spec.ts and env.validation.spec.ts
- Update documentation and .env.example to reflect migration-driven schema management

Closes rinafcode#1210
@drips-wave

drips-wave Bot commented Aug 29, 2026

Copy link
Copy Markdown

@xeexco Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

@RUKAYAT-CODER

Copy link
Copy Markdown
Contributor

Thank you for contributing to the project.

@RUKAYAT-CODER
RUKAYAT-CODER merged commit 7dcb020 into rinafcode:main Aug 29, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

synchronize is enabled for every non-production env, which now fights migrations

2 participants